/******************************************************
*  Copyright(c) pages.ilovezxl.top
*  FileName : gpio.h
*  Author : rivulet.dave
*  Description : GPIOÒý½Å½Ó¿Ú
*  Data : 2019-04-15
******************************************************/

#ifndef __HAL_GPIO_H__
#define __HAL_GPIO_H__


/*********************************************************************
 * INCLUDES
 */

#ifdef __cplusplus
extern "C" {
#endif

#if (HAL_GPIO == _ENABLE)

/*********************************************************************
 *  EXTERNAL VARIABLES
 */

/*********************************************************************
 * TYPES
 */

typedef enum  _gpio_state
{
    GPIO_LOW = 0,
    GPIO_HIGH = 1,
    GPIO_RISE_EDGE = 2,
    GPIO_FALL_EDGE = 4,
} GPIO_STATE_E;

typedef enum _gpio_dir
{
    GPIO_INPUT,
    GPIO_OUTPUT,
    GPIO_HIGH_RESI, // 默认高阻状态
} GPIO_DIR_E;

typedef struct _hal_gpio_ctrl_cb
{
    int32_t iIdx;
    int32_t iDir;
    int32_t iState;
    int32_t (*pfIOSignalCallback)(void *arg);  // 回调函数
} HAL_GPIO_CTRL_S;

/*********************************************************************
 * MACROS
 */


/*********************************************************************
 * FUNCTIONS
 */

/**
 *   @Description: GPIO模块初始化
 *   @param  : NA
 *   @return : 模块描述符
 */
hd_t GPIO_Init(void);

/**
 *   @Description: GPIO模块退出
 *   @param  : NA
 *   @return : NA
 */
void GPIO_Exit(void);

#endif /* HAL_GPIO == _ENABLE */

#ifdef __cplusplus
}
#endif /* end of __cplusplus */

#endif
/************************************** The End Of File **************************************/

